<?php 


/*$str='lbolarr.rc8r8ddm';
$preg="/[abc]/";
$c=preg_match($preg, $str);
var_dump($c);*/


/*$str = "学并思官网www.xuebingsiwang.com学并思论坛  http://bbs.xuebingsiwang.com我在学并思的网名叫xuebingsi";
$preg = "/(xue)bing(si)wang/";
$newStr= preg_replace($preg,"<span  style='color:#f00'>$1</span>$2",$str);
	echo $newStr;*/

/*$str='baidu.com';

$preg='/(baidu|sina)/';
$c=preg_match($preg, $str);
var_dump($c);*/

/*$str='18926241149';

$preg='/\d{8,19}/';
$c=preg_match($preg, $str);
var_dump($c);*/

/**尽可能多匹配量次*/
/*$str='ww453555ddd';

$preg='/\d{2}$/';
$c=preg_match($preg,$str);
var_dump($c);*/


/*$str='18926241149';

$preg='/^[1](3[0-9]|4[5789]|8[89]|)\d{8}$/';
$c=preg_match($preg,$str);
var_dump($c);*/

/*第三、四位表示市（地级市、自治州、盟及国家直辖市所属市辖区和县的汇总码）。其中，01-20，51-70表示省直辖市；21-50表示地区（自治州、盟）*/
/*第五、六位表示县（市辖区、县级市、旗）。01-18表示市辖区或地区（自治州、盟）辖县级市；21-80表示县（旗）；81-99表示省直辖县级市*/
/*$str='4415222017 1011001X';
																
$preg='/^(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5])([0-7])\d{3}((1[\d][\d][\d])|(2[0][01][0-7]))((0|\d)|(1[0-2]))(([0|1|2][\d])|3[01])\d{3}([\d]|[xX])$/';
$c=preg_match($preg,$str);
var_dump($c);*/

/*/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/*/
													/*2017 2000 1999 ((1[\d][\d][\d])|(2[0][01][0-7]))*/


/*$str='zhi_inm';
/*$preg='/^0[A-z][A-z0-9]{5,7}$/';*/
/*$preg='/^[\w|\W]{6,}$/';  密码
$c=preg_match($preg, $str);
var_dump($c);*/


/*$str='o_@1.com';

$preg='/^[A-z0-9]\w*@[A-z0-9-]+\.[A-z]{2,}(\.[A-z{2,}])*$/';
$c=preg_match($preg, $str);
var_dump($c);*/





// $str = "hello wabc9399s7.rld";
// $preg = "/abc/";
// $c = preg_match($preg, $str);
// var_dump($c); 


// () 原子组 可用于反向引用
// $str = "学并思官网www.xuebingsiwang.com学并思论坛  http://bbs.xuebingsiwang.com我在学并思的网名叫xuebingsi";
// 	$preg = "/(xuebingsi)wang/is";
// 	$newStr= preg_replace($preg,"<span style='color:#f00;font-size:35px;'><b><u><sub>$1</sub></u></b></span>wang",$str);
// 	echo $newStr;


// | 这个符号带表选择修释符，也就是 | 左右两侧有一个匹配到就可以
// $str = "China";
// $preg = "/China|England/";
// $c = preg_match($preg, $str);
// var_dump($c);


// {} 重复匹配(量词)   *重复零次或更多次   +重复一次或更多次   ?重复零次或一次  
// $str = "18926241149";
// $preg = "/\d{7}/";
// $c = preg_match($preg, $str);
// var_dump($c);


// 后面加 ? 禁止重复匹配
// $str = "444";
// $preg = "/\d+?/";
// $c = preg_replace($preg,"Xx" , $str);
// var_dump($c);


//匹配字符串边界  1.^匹配字符串的开始  2.$匹配字符串的结束，忽略换行符\n
//
//模式修正符  i不区分大小写字母的匹配  2.s将字符串视为单行，换行符做普通字符看待，使“.” 匹配任何字符


//     手机正则 2017-06-20
// 国内三家运营商的号段分别如下：
// 电信号段:133/153/180/181/189/177；
// 联通号段:130/131/132/155/156/185/186/145/176；
// 移动号段:134/135/136/137/138/139/150/151/152/157/158/159/182/183/184/187/188/147/178
$phone = "18926241149";
$preg = "/^[1]([3][\d]|[4][57]|[5][^4]|[7][678]|[8][\d])\d{8}$/";
$c = preg_match($preg, $phone);
var_dump($c);
echo "手机    ".$c;


//     用户名正则 例 6-8字符  包含字母数字  不能数字开头
$username = "z1hg1k7";
$preg = "/^[A-z][A-z|0-9]{5,7}$/";
$c = preg_match($preg, $username);
var_dump($c);
echo "用户名    ".$c;


//     密码正则 例 至少6个字符或以上   "/^[\w|\W]{6,}$/"
$password = "_|_|_|_|_|_";
$preg = "/^[\w|\W]{6,}$/";
$c = preg_match($preg, $password);
var_dump($c);
echo "密码    ".$c;


//     邮箱正则 例 开头必须字母数字  允许如6_@  @后面至少1个字母数字  .后面加2位以上字母  
$email = "641166354@qq.com.cn";
$preg = "/^[A-z0-9][\w]*@[A-z0-9-]+\.[A-z]{2,}(\.[A-z]{2,})*$/";
$c = preg_match($preg, $email);
var_dump($c);
echo "邮箱    ".$c;


/*华北地区： 北京市|110000，天津市|120000，河北省|130000，山西省|140000，内蒙古自治区|150000，
东北地区： 辽宁省|210000，吉林省|220000，黑龙江省|230000，
华东地区： 上海市|310000，江苏省|320000，浙江省|330000，安徽省|340000，福建省|350000，江西省|360000，山东省|370000，
华中地区： 河南省|410000，湖北省|420000，湖南省|430000，
华南地区： 广东省|440000，广西壮族自治区|450000，海南省|460000，
西南地区： 四川省|510000，贵州省|520000，云南省|530000，西藏自治区|540000，重庆市|500000，
西北地区： 陕西省|610000，甘肃省|620000，青海省|630000，宁夏回族自治区|640000，新疆维吾尔自治区|650000，
特别地区：台湾地区(886)|710000，香港特别行政区（852)|810000，澳门特别行政区（853)|820000
第一、二位表示省（自治区、直辖市、特别行政区）
第三、四位表示市（地级市、自治州、盟及国家直辖市所属市辖区和县的汇总码）。其中，01-20，51-70表示省直辖市；21-50表示地区（自治州、盟）
第五、六位表示县（市辖区、县级市、旗）。01-18表示市辖区或地区（自治州、盟）辖县级市；21-80表示县（旗）；81-99表示省直辖县级市*/

//     身份证正则 例  二月份未考虑平闰年
$ID = "44701020171026001X";
$preg = "/^[1-6][0-7]([1-6][\d]|[7][0]|[0][^0])([1-9][\d]|[0][^0])([1][\d]{3}|[2][0][0][\d]|[2][0][1][0-7])([0][^02][0][1-9]|[0][^02][12][\d]|[1][012][0][1-9]|[1][012][12][\d]|[0][13578][3][01]|[1][02][3][01]|[0][469][3][0]|[1][1][3][0]|[0][2][0][1-9]|[0][2][12][\d])\d{3}[\d|xX]$/";
$c = preg_match($preg, $ID);
var_dump($c);
echo "身份证    ".$c;


//  二月份未考虑平闰年
// 1.1为0,3为0时  月份为0开头 第二位02先除外 第三位0开头 第四位只能1-9  如：0101
// 2.1为0,3为12时  月份为0开头 第二位02先除外 第三位12开头 第四位可以d  如：0110
// 3.1为1,3为0时  月份为1开头 第二位只能012 第三位0开头 第四位只能1-9  如：1001
// 4.1为1,3为12时  月份为1开头 第二位只能012 第三位12开头 第四位可以d  如：1010
// 5.大月1为0,3为3时  月份为0开头 第二位只能13578 第三位3开头 第四位只能01  如：0131  
// 6.大月1为1,3为3时  月份为1开头 第二位只能02 第三位3开头 第四位只能01  如：1031     
// 7.小月1为0,3为3时  月份为0开头 第二位只能469 第三位3开头 第四位只能0  如：0430
// 8.小月1为1,3为3时  月份为1开头 第二位只能1 第三位3开头 第四位只能0  如：1130
// 9.二月0为0,3为0时  月份为0开头 第二位只能2 第三位0开头 第四位只能1-9  如：0201
// 10.二月0为0,3为12时  月份为0开头 第二位只能2 第三位12开头 第四位可以d  如：0210
// ([0][^02][0][1-9]|[0][^02][12][\d]|[1][012][0][1-9]|[1][012][12][\d]|[0][13578][3][01]|[1][02][3][01]|[0][469][3][0]|[1][1][3][0]|[0][2][0][1-9]|[0][2][12][\d])






 ?>